package in.rob.client.page.base; import in.lib.Constants; import in.lib.adapter.UserAdapter; import in.lib.event.FollowUserEvent; import in.lib.event.UnFollowUserEvent; import in.model.SimpleUser; import in.model.User; import in.model.base.NetObject; import in.rob.client.ProfileActivity; import java.util.ArrayList; import java.util.List; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import com.squareup.otto.Subscribe; public abstract class UserStreamFragment extends StreamFragment { @Override public void onDataReady() { } @Override public void retrieveArguments(Bundle arguments) { } @Override public void setupAdapters() { if (getAdapter() == null) { setAdapter(new UserAdapter(getContext(), new ArrayList<User>())); } else { setAdapter(getAdapter()); } } /** * Loops through posts and builds a list of users and tags to use in auto suggest */ public void extractUsersAndTags(List<NetObject> list) { List<SimpleUser> users = getCacheManager().readFileAsObject(Constants.CACHE_USERNAMES, new ArrayList<SimpleUser>()); List<String> usersStr = getCacheManager().readFileAsObject(Constants.CACHE_USERNAMES_STR, new ArrayList<String>()); if (list != null) { for (NetObject o : list) { User p = (User)o; if (!usersStr.contains(p.getId())) { users.add(SimpleUser.parseFromUser(p)); usersStr.add(p.getId()); } } } getCacheManager().asyncWriteFile(Constants.CACHE_USERNAMES, users); getCacheManager().asyncWriteFile(Constants.CACHE_USERNAMES_STR, usersStr); } @Override public void checkAdapterSizes() { super.checkAdapterSizes(); if (getAdapter().getCount() > 7) { getListView().removeFooterView(getPaddingView()); } } @Override public void onItemClick(AdapterView<?> arg0, View v, int position, long arg3) { User u = (User)getAdapter().getItem(position - getHeadedListView().getHeaderViewsCount()); Intent intent = new Intent(getContext(), ProfileActivity.class); intent.putExtra(Constants.EXTRA_USER, u); startActivity(intent); } /************************************************** * * OTTO EVENTS * **************************************************/ /** * Called when a user is followed * * @param event The follow event with the user object */ @Subscribe public void onFollowUser(FollowUserEvent event) { if (getAdapter() != null) { User user = event.getUser(); user.save(); } } /** * Called when a user is unfollowed * * @param event The unfollow event with the user object */ @Subscribe public void onUnFollowUser(UnFollowUserEvent event) { if (getAdapter() != null) { User user = event.getUser(); user.save(); } } }